1. Field of the Invention
The present invention is directed to a system for evaluating dependancy graphs in a graphics creation environment more efficiently and, more particularly, to a system that passes not only data but also passes functions or algorithms between dependancy nodes.
2. Description of the Related Art
As graphics creation processes, such as the Maya™ system available from Alias|Wavefront, Inc. a subsidiary of Silicon Graphics, Inc., typically used for animation and visual effects have gotten more complicated, designers have looked for ways in which to better control access to needed data and to better control the execution of the processes involved to improve execution speed or efficiency and resource utilization. One of the ways in which this has been accomplished is to control execution through a mechanism, such as available in Maya™, called a dependency graph. A dependency graph (DG) and an associated node evaluation process as described by U.S. Pat. Nos. 5,808,625 and 5,929,864 (incorporated by reference herein) provides a method for passing data through dependency nodes in a dependency graph. One of the drawbacks of this method is that the graph is a static object and can only be evaluated in a single state. The graph's state can be changed between evaluations through altering the input values but at any evaluation step there is only one value available at each input attribute.
Additionally, algorithms are hard coded into the dependency nodes, making it impossible to share the remainder of the code. Function calls also have fixed argument lists which are not sufficient for those writing replacement algorithms. Data streams requiring large amounts of evaluation are inefficient when going between dependency node connections.
Because of these issues, one situation not well handled by this arrangement is the desire to evaluate a particular subgraph at many different combinations of inputs as rapidly as possible. Two problems arise; the possibility that the alteration of inputs will affect areas of the graph we do not wish to reevaluate, and the fact that traversing the graph to perform evaluations can be inherently more costly (time consuming) than simply evaluating the algorithms themselves.
The usual solution to these problems is to create many different nodes, one for each variation required.
The remedy for these problems, that is, what is needed is to allow not only data but also algorithms to be passed through the DG. Then, when a particular attribute is evaluated, the result is not the single value of that attribute with the current state of inputs, but instead an algorithm that can be used to evaluate the attribute at any desired combinations of inputs (graph states).